package org.dromara.system.domain.vo;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.system.domain.AppProcurementDetail;
import org.dromara.system.domain.AppProcurementPlan;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;


/**
 * 采购计划视图对象 app_procurement_plan
 *
 * @author Lion Li
 * @date 2025-09-12
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = AppProcurementPlan.class)
public class AppProcurementPlanVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @ExcelProperty(value = "主键ID")
    private Long id;

    /**
     * 采购计划编号
     */
    @ExcelProperty(value = "采购计划编号")
    private String planCode;

    /**
     * 发货地址
     * */
    private String deliveryAddress;

    /**
     * 订单状态 订单状态 0待下发 1已下发/待确认 2待接单 3待发货 4运输中 5已送达 6已完成 7费用待确认 8已确认费用 10待支付 11已支付 12退货中
     */
    private Long orderStatus;

    /**
     * 是否确认承运 0否 1是
     */
    private Integer stayCarrier;
    /**
     * 采购计划编号
     */
    @ExcelProperty(value = "父采购计划编号")
    private String pid;

    /**
     * 计划类型 0年度计划 1季度计划 2月度计划 3日计划
     */
    @ExcelProperty(value = "计划类型 0年度计划 1季度计划 2月度计划 3日计划")
    private Long planType;

    /**
     * 订单ID
     */
    private String orderId;

    /**
     * 季度数
     */
    @ExcelProperty(value = "季度数")
    private Long quarterNum;

    /**
     * 月度数
     */
    private Long mouthNum;

    /**
     * 日度数
     */
    private Long dayNum;

    /**
     * 公司ID
     */
    @ExcelProperty(value = "公司ID")
    private Long companyId;

    /**
     * 公司名称
     */
    @ExcelProperty(value = "公司名称")
    private String companyName;

    /**
     * 审核状态 0审核中 1审核成功 2审核失败
     */
    @ExcelProperty(value = "审核状态 0审核中 1审核成功 2审核失败")
    private Long auditStatus;

    /**
     * 失败原因
     */
    @ExcelProperty(value = "失败原因")
    private String failReason;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;

    /**
     * 采购详情
     */
    private List<AppProcurementDetail> appProcurementDetailVos;


    /**
     * 子计划
     */
    private List<AppProcurementPlanVo> appChildPlanVos;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy.MM.dd")
    private Date createTime;

    /**
     * 仓库名称
     */
    @ExcelProperty(value = "仓库名称")
    private String warehouseName;

    /**
     * 供应商名称
     */
    private String supplierName;

    /**
     * 供应商id
     */
    private String supplierId;


    /**
     * 长
     */
    private Double length;

    /**
     * 宽
     */
    private Double width;

    /**
     * 高
     */
    private Double height;

}
